package com.neteast.androidclient.contact.util;

import java.util.regex.Pattern;

/**
 * 验证工具类
 * @author tiangh
 * 2012-4-5 下午3:22:00
 */
public class ValidateUtil {
	private ValidateUtil(){}
	/**
	 * 验证email
	 * @param email
	 * @return
	 */
	public static boolean validateEmail(String email) {
		String reg="\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
		return Pattern.matches(reg, email);
	}
	/**
	 * 验证信息，根据type的不同，分别调用不同的方法
	 * @param type
	 * @param label
	 * @param content
	 * @return
	 */
	public static boolean validate(int type, String label, String content) {
		switch (type) {
		default:
		case 1:
			return validatePhone(label,content);
		case 2:
			return validateEmail(content);
		case 3:
			return validateIm(label,content);
		case 4:
			return validateLocation(label,content);
		}
	}
	/**
	 * 验证地址，暂时不予操作
	 * @param label
	 * @param content
	 * @return
	 */
	public static boolean validateLocation(String label, String content) {
		return true;
	}
	/**
	 * 严重im号，其中QQ必须是数字
	 * @param label
	 * @param content
	 * @return
	 */
	public static boolean validateIm(String label, String content) {
		String reg=null;
		if (label.indexOf("QQ")!=-1) {
			reg="[1-9]\\d{5,}";
			return Pattern.matches(reg, content);
		}else {
			reg="\\w+";
			return Pattern.matches(reg, content);
		}
	}
	/**
	 * 将电话号码格式化， 去掉以+或者+86，去掉其中串联的-，去掉空格
	 * @param phone
	 * @return
	 */
	public static String formatMobilePhone(String phone){
		phone=phone.replaceAll("\\s+", "");
		if (phone.startsWith("+86")) {
			phone=phone.replaceAll("\\+86", "");
		}else if (phone.startsWith("+")) {
			phone=phone.replaceAll("\\+", "");
		}
		if (phone.contains("-")) {
			phone=phone.replaceAll("-", "");
		}
		return phone;
	}
	/**
	 * 验证电话号码，其中对于手机号特别予以验证
	 * @param label
	 * @param content
	 * @return
	 */
	public static boolean validatePhone(String label, String content) {
		String reg=null;
		if (label.indexOf("手机")!=-1) {
			content=formatMobilePhone(content);
			reg="((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}";
			return Pattern.matches(reg, content);
		}else {
			return Pattern.matches("\\d+", content);
		}
	}
}
